import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog, QLineEdit

# 创建一个继承自QWidget的类
class FileChooserApp(QWidget):
    def __init__(self): # 初始化方法
        super().__init__() # 调用父类的初始化方法
        self.initUI() # 调用自定义的初始化方法

    # 自定义的初始化方法
    def initUI(self):
        self.setGeometry(300, 50, 800, 600) # 设置窗口的位置和大小，四个参数分别是：x坐标、y坐标、宽度和高度
        self.setWindowTitle('File Chooser Example') # 设置窗口标题

        # 创建一个文本框用于显示文件路径
        self.file_path_edit = QLineEdit(self) # 创建一个文本框
        self.file_path_edit.setGeometry(50, 30, 200, 30) # 设置文本框的位置和大小

        # 创建一个按钮用于触发文件选择操作
        choose_file_button = QPushButton('Choose File', self)
        choose_file_button.setGeometry(100, 80, 100, 30)
        choose_file_button.clicked.connect(self.show_file_dialog)

        self.show()

    def show_file_dialog(self):
        # 弹出文件选择对话框，设置初始目录为当前目录（可按需修改），并只允许选择单个文件
        options = QFileDialog.Options()
        file_name, _ = QFileDialog.getOpenFileName(self, "Select File", ".", "All Files (*);;Text Files (*.txt)", options=options)
        if file_name:
            # 将选择的文件路径显示在文本框中
            self.file_path_edit.setText(file_name)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = FileChooserApp()
    sys.exit(app.exec_())